package org.resotc.model;

import java.util.ArrayList;

import org.resotc.model.Element;

import sim.util.Double2D;

public interface Individual {
	public double getX();


	public void setX(double x); 


	public double getY(); 


	public void setY(double y); 

	public abstract Double2D getPosition();

	public abstract Element getCurrentNetworkElement();

	public abstract double getDesiredSpeed();

	public void updatePosition(ArrayList<Element> elemente,Double2D location);

	public abstract void transferToNextElement();

	public abstract Element chooseNextElement(ArrayList<Element> nextElements);

	public abstract double calculateDistanceInStep();

	public abstract double calculateTravelTime(double endTime);

	public abstract int getNumberOfStops();
	public abstract void setNumberOfStops(int stops);

	public abstract double getLength();
	public void setTravelTime(double time);
	public abstract String getMyID();

	public abstract void setMyID(String myID);

	public abstract Centroid getMyDestination();

	public abstract void setMyDestination(Centroid myDestination);

	public abstract Centroid getMyStart();

	public abstract void setMyStart(Centroid myStart);

	public abstract void setDesiredSpeed(double value);

	public abstract double getRelativeLinkPosition();

	public abstract void setRelativeLinkPosition(double relativeLinkPosition, Double2D predecessor, Double2D successor);

	public abstract Element getNextChosenElement();
	public void writeStatistic();
	public IndividualType getIndividualType();


	public void resetRelativeLinkPosition();
	
	public void setLaneId(int laneId);
	
	public int getLaneId();
}